class_name GameEnum

## 全局枚举

################################# Global #################################
enum Direction
{
	Up,
	RightUp,
	Right,
	RightDown,
	Down,
	LeftDown,
	Left,
	LeftUp,
}
###############################################################################

################################# GameManager #################################
enum GameState
{
	Null,
	MainMenu,
	Loading,
	Gaming,
	Pausing,
	GameOver,
	Transition, # 用于诸如过场动画之类的播放
	DisableInput, # 禁止输入
	Waiting, # 大厅等待界面
}
enum GameMode
{
	Dev,
	Test,
	OfficialVersion,
}
###############################################################################

################################# BaseView #################################
enum OpenMode
{
	ExcludeLessPriority,
	ExcludeLessEqualPriority,
	ExcludeEqualPriority,
	ExcludeGreaterPriority,
	ExcludeGreaterEqualPriority,
	ExcludeNone,
	ExcludeAll,
}
enum ReopenMode
{
	Forbidden,Reopen
}
enum AudioMode
{
	None,Open,Close,All
}
enum ViewState
{
	Enter,Pause,Resume,Exit
}
# View的唯一标识，新的View需要来这注册一下
enum ViewType
{
	MainMenuView,
	GamingView,
	PausingView,
	CircleBtnView,
	ComboView,
	ComboSubView,
	LoadingView,
	GameOverView,
	SettingView,
	RecordView,
}
###############################################################################

################################# Buff #################################
enum BuffType
{
	Buff, # 增益buff
	Debuff, # 减益buff
	None, # 中性buff
}
enum BuffGroup
{
	Nothing = 1 << 0,
	Everything = 1 << 1,
	#Group0 = 1 << 2,
}
# buff冲突处理类型
enum BuffConflictResolution
{
	Combine, # 合并
	Separate, # 独立存在 
	Cover, # 覆盖
}
###############################################################################

################################# State #################################
enum StateStatus
{
	Ready, # 已准备好，可以转换
	Excuting, # 执行中
	Waiting, # 等待中，决定延迟转换但还未转换时所处状态 
	Closed, # 已关闭，该状态无法进入
}
###############################################################################

################################# SteeringBehavior ####################################
enum ContextBehaviorType
{
	Arrive,
	AvoidCollision,
	Flee,
	Seek,
	Wander,
	Evade,
	Pursue,
	Surround,
	FollowPath,
	Face,
	Group,
	Separation,
	AddAngularForceInterest,
	AddLinearForceInterest,
	Cohesion,
	FaceVel,
	LookAtVelDirection,
	MathRotation,
	FaceTarget,
}
enum TargetDetectorTargetType
{
	Target,
	VisibleTarget,
	SameCampTarget,
}
###############################################################################

################################# HitBox/HurtBox #################################
enum HurtMessageType
{
	Null,
	Hurt,
	Recover,
}
enum Area2DDetectorTiming
{
	Enter,
	Stay,
	Exit,
}
enum Area2DDetectorDetectRange
{
	Area,
	Body,
	AB,
}
###############################################################################

################################# Ability #################################
enum EntityAbility
{
	Nothing = 1 << 0,
	Everything = 1 << 1, # 2^32-1
	Move = 1 << 2, # 移动
	Attack = 1 << 3, # 攻击
	ReleaseSkill = 1 << 4, # 使用技能
	Interact = 1 << 5, # 交互
	Flip = 1 << 6, # 翻转
	Update = 1 << 7, # 更新
	Hit = 1 << 8, # HitBox有效
	Hurt = 1 << 9, # HurtBox有效
	SelectTarget = 1 << 10, # 选择目标
	BeSelectTarget = 1 << 11, # 被选择为目标
	BeKnockback = 1 << 12, # 被击退
	Control = Move|Attack|ReleaseSkill|Interact|Flip,
}
###############################################################################

################################# Camp #################################
enum Camp
{
	None, # 无
	Friendly, # 友方
	Hostile, # 敌方
	Neutral, # 中立
}
###############################################################################

################################# Weapon #################################
enum WeaponState
{
	UnPickable, # 不可拾取
	Pickable, # 可拾取
	Obtain, # 获得
	UnEquip, # 未装备
	Equip, # 装备中
	Destroy, # 销毁
}
###############################################################################

################################# Slot #################################
enum SlotType
{
	Head,
	Hand,
	Body,
	Feet,
	Root,
	Weapon,
	Effect,
	Other,
}
###############################################################################

################################# Racc #################################
# 原始种族
enum OriginalRace
{
	None, # 无
	Human, # 人类
	Elf, # 精灵
	Orc, # 兽人
	Dwarf, # 矮人
}
# 变体种族，包括融合种族、拓展种族等
enum VariantRace
{
	None, # 无
	NightElf, # 暗夜精灵
}
###############################################################################

################################# Skill #################################
# Skill优先级冲突处理类型
enum SkillPriorityConflictResolution
{
	# 不执行任何操作
	Ignore,
	# 打断更小优先级的技能
	InterruptLowerPriority,
	# 结束当前所有技能，然后只开始这个技能
	Solo,
}
# Skill释放条件不满足的处理类型
enum SkillNotMeetReleaseConditionResolution
{
	# 不执行任何操作
	Ignore,
	# 打断所在的Skill
	InterruptSkill,
}
# Skill释放消耗不满足的处理类型
enum SkillNotMeetReleaseCostResolution
{
	# 不执行任何操作
	Ignore,
	# 打断所在的Skill
	InterruptSkill,
}
enum SkillState {
	Init,
	Waiting,
	Releasing,
	Cooling,
	Interrupted,
	Completed,
	Destroyed,
}
enum SkillActionState {
	Init,
	Waiting,
	Releasing,
	Cooling,
	Interrupted,
	Completed,
	Destroyed,
}
# Skill释放结果
enum SkillReleaseStatus
{
	Success, # 释放成功
	Failure, # 释放失败
	Releasing, # 释放失败，当前技能正在释放中
	OtherReleasing, # 释放失败，有其它不能同时释放的技能正在释放
	AgentCantRelease, # 释放失败，当前SkillAgent无法释放该技能
	DontMeetTheReleaseCondition, # 释放失败，当前技能释放条件不满足
	DontMeetTheReleaseCost, # 释放失败，当前技能释放消耗条件不满足
	Cooling, # 释放失败，该技能正在冷却中
	NoAdded, # 释放失败，该技能未被添加
	NoInited, # 释放失败，该技能尚未初始化
	SubActionCantRelease, # 释放失败，子Action无法释放
}
# Skill释放结束结果
enum SkillReleaseResult
{
	Success, # 成功
	Interrupted, # 被打断
	Failure, # 失败
}
#region 给技能编辑器用的
# Skill节点类型
enum SkillNodeType
{
	Control, # 控制节点
	Composite, # 组合节点
	Action, # 行为节点
	Other, # 其它节点
	Skill, # Skill节点
}
# Skill属性类型
enum SkillPropertyType
{
	String,
	Int,
	Float,
	Bool,
	Enum,
}
#endregion
###############################################################################

################################# Cost #################################
###############################################################################

################################# ControllerCommand #################################
enum ControllerCommandType
{
	None,
	Visible,
	AddVel,
	AddAcc,
	ReleaseSkill,
	Buff,
}
enum ControllerCommandTagConflictResolution
{
	Ignore, # 忽略
	Separate, # 独立存在 
	Cover, # 覆盖
	HighPriority, # 保留高优先级
}
###############################################################################

################################# ControllerComponent #################################
enum KeyAction
{
	MoveLeft,
	MoveRight,
	MoveUp,
	MoveDown,
	Attack,
	Skill,
	PersonSkill,
	Switch,
	Discard,
	Reload,
	Dodge,
	Interact,
	ComboView,
	CMD,
}

enum  KeyActionState
{
	Idle, # 空闲
	Pressed, # 按下
	Stay, # 保持按下
	Released, # 松开
}
###############################################################################

################################# Map ####################################
enum RoomType
{
	NullRoom,
	WaitingRoom,
	StartRoom,
	TransferRoom,
	ShopRoom,
	RewardRoom,
	EnemyRoom,
	BossRoom,
	EndRoom,
	TrainingRoom,
	DevRoom,
}
enum RoomStatus
{
	NotArrived,
	Arrived,
	End,
}
enum SpawnAreaType
{
	Rectangle,
	Circle,
}
enum RoomDoorType
{
	DoorUp,
	DoorRight,
	DoorDown,
	DoorLeft,
}
enum RoomDoorState
{
	# 未激活
	NoActive,
	# 隐藏
	Hide,
	# 关闭
	Close,
	# 打开
	Open,
}
###############################################################################

################################# Trigger ####################################
enum TriggerType
{
	None,
	MOUSE_IN,
	MOUSE_OUT,
	PRESSED,
	RELEASED,
	DOUBLE_CLICKED,
	READY,
	VISIBLITY_CHANGED,
}
###############################################################################

################################# Entity ####################################
enum EntityState
{
	Init,
	EnterTree,
	Ready,
	Progress,
	PhysicsProgress,
	ExitTree,
	Destroy,
}
###############################################################################

################################# Detector ####################################
enum DetectorType
{
	Target,
	Obstacle,
	Selection,
}
enum DetectorSelectMode
{
	Mouse, # 鼠标位置
	TargetAroundTheMouse, # 鼠标附近的Target
	ClosedTarget, # 最近的Target
	ByOtherSystem, # 通过其它系统确定 
}
###############################################################################

################################# Book ####################################
enum BookItemMainType
{
	
}
enum BookItemSubType
{
	
}
enum BookItemQuality
{
	
}
###############################################################################

################################# Task ####################################
enum TaskCondition
{
	
}
###############################################################################





################################# Util ####################################
enum UtilObstacleCheckRange
{
	Area,
	Body,
	AB,
}
###############################################################################
